import {generateFieldId} from "../../../support/generateFieldId";

class Config {
  // 类型
  type?: string = "input";
  // 背景颜色
  backgroundColorAlias?: string;
  // 是否启用填写推荐
  isRecommend?: boolean;
  // 显示方式 数字｜百分比｜仅日期｜日期和时间
  // number｜percent｜date｜datetime
  displayMode?: string;
  // 类型为百分比时、保留几位小数
  precision?: number;
  // 单位
  unitName?: string;
  // 单位显示位置、前缀｜后缀
  // suffix｜prefix
  unitPosition?: string;
  // 是否显示大写
  isUpper?: boolean;
  // 数值位数分割符 不显示｜千分位｜万分位
  // none｜thousands｜ten-thousands
  separator?: string;
}

// 表达式、script
class Script {
  // 表达式内容
  code: string;
}

// 关联关系、relation
class Relation {
  // 目标
  relatedByField_id: number;
  // 来源
  sourceFieldId: number;
  // ?
  targetFieldId: number;
}

// 默认值
class Default {
  // 类型
  // value、script、relation
  type: string;
  // 文本类型的默认值
  value?: string;
  // 表达式
  script?: Script;
  // 关联显示
  relation?: Relation;
}

class Lock {
  delete?: number;
  update?: number;
}

class Field {
  // 编号
  fieldId: any;
  // 表格编号
  tableId?: any;
  // 类型
  // text、identity、number、money、calc、checkbox, dropdown,member、datetime、image、attachment、location、relation
  // 文本、号码、数值、金额、计算、选项、下拉菜单、工作区成员、日期和时间、图片、附件、位置、关联其他表格
  type: string = "text";
  // 显示位置/顺序
  index?: number = 0;
  // 字段名、默认同ID
  key?: string;
  // 名称
  name: string = "";
  // 其他配置
  config?: Config = new Config();
  // 默认值
  default?: Default = new Default();
  // Lock
  lock?: Lock = new Lock();
  // 是否必须
  isRequired?: boolean;
  // 是否唯一
  isUnique?: boolean;
  // 描述
  description?: string;

  constructor() {
  }
}

export {Field, Config, Script, Relation, Default, Lock}
